package cn.hinglo.permission.service;

import cn.hinglo.common.annotation.Value;
import cn.hinglo.common.constant.SystemConstant;
import cn.hinglo.common.util.QiniuFileUploadKit;
import cn.hinglo.common.util.UploadKit;
import cn.hutool.core.util.StrUtil;
import com.jfinal.upload.UploadFile;

import java.io.File;

/**
 * @createTime: 2020/3/13 : 17:40
 * @author: HingLo
 * @description: 文件上传服务
 */
public class UploadService {

    /***
     * 存储方式 1：七牛云，2：本地路径
     */
    @Value("${fileMethod}")
    private String method;

    /***
     * 文件上传
     * @param type 指定类型
     * @param uploadFile 文件具体对象
     * @return 返回保存路径，如果是骑牛云就返回可访问路径
     */
    public String uploadService(String type, UploadFile uploadFile) {
        if (SystemConstant.QI_NIU.equals(method)) {
            return QiniuFileUploadKit.uploadFile(uploadFile);
        } else {
            String path = UploadKit.uploadFile(uploadFile, type);
            if (StrUtil.isBlank(path)) {
                throw new RuntimeException("文件上传失败");
            }
            return path;
        }
    }

    /***
     * 图片上传接口
     * @param uploadFile 文件上传对象
     * @param type 文件类型
     * @return 返回结果
     */
    public String imgUploadService(UploadFile uploadFile, String type) {
        if (SystemConstant.QI_NIU.equals(method)) {
            return QiniuFileUploadKit.uploadFile(uploadFile);
        } else {
            String path = UploadKit.uploadImage(uploadFile, type);
            if (StrUtil.isBlank(path)) {
                throw new RuntimeException("图片上传失败");
            }
            return path;
        }
    }

    /***
     * 获取文件
     * @param filePath 文件路径
     * @return 返回文件对象
     */
    public File downloadService(String filePath) {
        return new File(UploadKit.getFilePath(filePath));
    }

}
